This disclosure relates in general to cache architecture and, but not by way of limitation, to cache architecture utilizing solid state drives (SSDs).
Content delivery networks (CDNs) are in the business of delivering content for others. CDNs will either cache and/or host content for its customers. Efficiently delivering content for a large number of customers creates difficulty. It would not be practical to store every possible content object serviced by the CDN on every edge server. Often caches are used on the edge servers to store popular or important content at the edges of the CDN. Popular content is less likely to have delivery latency, while less popular content is more likely to take a longer time to locate and deliver.
CDNs are optimized for affordable delivery and hosting of content and processing at varying quality of service (QoS). Through a distributed network of points of presence (POPs), there is likely to be a POP close to any end user. Caching and storage servers at the edge (“edge servers”) of the CDN and in each POP are optimized to deliver content for the customers who purchase service from the CDN. The storage needs in edge servers are ever increasing as the number of customers increases along with the size and volume of content objects.
SSDs have very fast seek times in comparison to spinning disks. This advantage comes with serious disadvantages that plague SSDs. Specifically, they are around ten times more expensive per byte than spinning media. Additionally, the underlying storage cells are EEPROM or flash which degrades over time as more writes occur. Caches are constantly adding and removing content such that the lifetime of a SSD would be unacceptable where reliability is important. These disadvantages have precluded adoption of SSD by CDNs.
SSD manufactures try to solve the limitation on writing to SSDs through several techniques. There is wear leveling which tries to distribute the writes evenly across the flash. Additionally, there is spare flash that is used to replace worn out cells. As cells go bad, replacement cells are seamlessly substituted so that the SSD appears to be without defect. The higher the stated reliability, the more spare flash is reserved. Additionally, error correction codes are used to mask bad cells. Error correction bits reduce the amount of information that can be stored on the SSD. Conventional solutions address less write-intensive activity than CDN caching.